This invention relates generally to input from legacy devices, such as pointing devices and keyboards, and non-legacy Human Input Devices (HID's), such as devices having Universal Serial Bus (USB) connectivity, IEEE-1394 connectivity, or another type of connectivity. More particularly, the invention relates to managing input from both such devices in a similar manner to provide to application programs.
Historically, the primary input devices for computers have been a keyboard and a pointing device, the latter typically being a mouse. Within a graphical user interface, the mouse is used to navigate a cursor, such as a pointer, on the screen. When a cursor is positioned over a desired graphical user interface element, such as a window or a button, one or more different pointing device buttons can be actuated to select the element. For example, pressing the left pointing device button over a button displayed on the screen causes the button to be selected in some operating systems. The keyboard, which has been a primary input device for computers even longer than the pointing device, is used mainly for achieving text entry.
Keyboards and pointing devices have traditionally connected to serial ports on the back of computers. These serial ports may be general-purpose serial ports, but more usually they are special-purpose serial ports, in that there is one serial port dedicated to the keyboard, and another for the pointing device. While serial ports come in many different form factors, currently the most popular form factor is known as PS/2, such that keyboards and pointing devices are said to have PS/2 connectors. Because of the ubiquity and long-term use of such keyboards and pointing devices, they are referred to as legacy devices.
Legacy devices are devices that, because of their ubiquity and long-term use in the industry, generally always are supported by operating systems and application programs. Most operating systems, for example, assume that a keyboard and a pointing device is connected to the computer on which they are running for the user to provide input. There are very few, if any, modern operating systems and application programs that do not assume the presence of a keyboard and a pointing device for providing input to the computer. To this extent, driver programs have been written especially for keyboards and pointing devices, and application programs have grown accustomed to dealing with keyboards and pointing devices in a usual way.
However, more recently, other types of input devices have become popular. Generally, these types of input devices are referred to as non-legacy devices. They are non-legacy devices because they are newer than legacy devices, and are not always supported by operating systems and application programs. As a class of devices, they are non-legacy input devices referred to as Human Interface Devices (HID's). Typically, non-legacy devices use a newer connector than the serial ports that are ubiquitous with PS/2-type keyboards and pointing devices. For example, they may have Universal Serial Bus (USB) connectivity, or IEEE-1394 connectivity, which is also referred to as FireWire or iLink connectivity. Paradoxically, such non-legacy devices may still include keyboards and pointing devices, but where the keyboards and pointing devices have a USB, IEEE-1934, or another type of connector, instead of a PS/2 connector. Other non-legacy devices include wheels, such as are found on pointing devices, touch-sensitive pads for achieving handwriting input, game controllers, and other types of input devices.
Because of the increasing number of such non-legacy input devices, operating systems and application programs have a difficult time accommodating them. The typical paradigm for managing input from non-legacy input devices is for the application programs to directly communicate with the device drivers for such devices. This is as opposed to how application programs communicate with legacy input devices, where they usually receive input therefrom through a manager component of the operating system. Unfortunately, current state of the art is such that, to accommodate new non-legacy input devices, operating systems have to be revised, where only a new version of an operating system can accommodate a new device. This is problematic for application programs desiring to use the new devices in the context of older versions of the operating systems, because they must then manage input from the drivers themselves, instead of relying on the operating system. This adds complexity to the development of application programs, as well as increased overhead not well suited for application programs.
The diagram of FIG. 1 illustrates a prior art system 100 in which the divergent approach for managing non-legacy devices is shown. The operating system environment 102 includes memory divided into a user mode 104 and a kernal mode 106. The kernel mode 106 is the specially protected part of the operating system's memory that is inhabited by special programs like the drivers 114, 116, and 118. Conversely, the user model 104 is the general part of the operating system's memory in which the application programs 122 reside, as well as some parts of the operating system itself, such as the prior art manager component 120.
As shown in FIG. 1, the keyboard 110 and the mouse 112 send input to the prior art manager component 120 through the keyboard driver 116 and the mouse driver 118, respectively. The prior art manager component 120 is the established mechanism for handling input from legacy devices such as the keyboard 110 and the mouse 112. The application programs 122 have come to rely on the existence of the manager component 120 as the way by which they receive keyboard and mouse input. The prior art manager component 120 itself includes the necessary overhead for communicating with the legacy device drivers 116 and 118, such that the application programs 122 do not have to concern themselves with this overhead.
Conversely, non-legacy devices, such as the HID's 108, do not send input to the prior art manager component 120 through their drivers 114. Instead, the application programs 122 must directly interface with the HID drivers 114 to receive input from the non-legacy devices. This means that the overhead necessary for learning of new non-legacy devices that are plugged in while the computer is running, as is allowed, for example, with USB and IEEE-1394 devices, must be handled by the application programs 122 themselves. Each of the application programs 122 must be developed to accommodate this overhead. Furthermore, when more than one of the application programs 122 tries to receive input from the same one of the devices 108, problems may arise. This is because some of the application programs 122 may be developed such that they do not count on other of the programs 122 attempting to receive input from the same device. Whereas the prior art manager component 120 manages this situation for legacy devices, it does not for non-legacy devices.
For the reasons described here, therefore, as well as for other reasons, there is a need for the present invention.